function findDiagonalOrder(mat) {
  // 获取矩阵的行数和列数
  const m = mat.length;
  const n = mat[0].length;
  const result = [];

  // 总共的对角线数量是 m + n - 1
  for (let sum = 0; sum < m + n - 1; sum++) {
    if (sum % 2 === 0) {
      // 偶数对角线: 从左下到右上遍历
      // 确定起始行和列
      let i = Math.min(sum, m - 1);
      let j = sum - i;

      // 遍历直到越界
      while (i >= 0 && j < n) {
        result.push(mat[i][j]);
        i--;
        j++;
      }
    } else {
      // 奇数对角线: 从右上到左下遍历
      // 确定起始行和列
      let j = Math.min(sum, n - 1);
      let i = sum - j;

      // 遍历直到越界
      while (j >= 0 && i < m) {
        result.push(mat[i][j]);
        i++;
        j--;
      }
    }
  }

  return result;
}

// 测试示例
console.log(
  findDiagonalOrder([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
  ])
); // [1,2,4,7,5,3,6,8,9]
console.log(
  findDiagonalOrder([
    [1, 2],
    [3, 4],
  ])
); // [1,2,3,4]
